package org.infosys.org.domain;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import org.infosys.basic.domain.BaseDomain;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
* @Description: TODO
* @Author: hank
* @Version: 1.0
* @Date:  2022/6/21 17:41
*/
@Data
public class Department extends BaseDomain {
    /** 部门编号 */
    private String sn;

    /** 部门名称 */
    private String name;

    /** 部门的上级分类层级id */
    private String dirPath;

    /** 部门状态 1启用，0禁用 */
    private Integer state;

    /** 部门管理员，关联Employee表id */
    private Long managerId;

    /** 上级部门 */
    private Long parentId;

    /** 部门经理对象 */
    private Employee manager;

    /** 上级部门对象 */
    private Department parent;

    /** 子级部门集合 */
    @JsonInclude(JsonInclude.Include.NON_EMPTY) // 当数据不为空的时候才返回
    private List<Department> children = new ArrayList<>();

    @Override
    public String toString() {
        return "Department{" +
                "sn='" + sn + '\'' +
                ", name='" + name + '\'' +
                ", dirPath='" + dirPath + '\'' +
                ", state=" + state +
                ", manager_id=" + managerId +
                ", parent_id=" + parentId +
                ", manager=" + manager +
                ", parent=" + parent +
                ", children=" + children +
                "} " + super.toString();
    }
}
